package com.fxc.crowd.constant;

import java.util.HashSet;
import java.util.Set;

/**
 * @author FXC
 * @version 1.0
 * @date 2021/12/9 15:25
 */
public class AccessPassResources {

    // 放行页面的静态资源
    public static final Set<String> PASS_RES_SET = new HashSet<>();

    static {
        PASS_RES_SET.add("/");
        PASS_RES_SET.add("/auth/member/to/reg/page");
        PASS_RES_SET.add("/auth/member/to/login/page");
        PASS_RES_SET.add("/auth/member/logout");
        PASS_RES_SET.add("/auth/member/do/login");
        PASS_RES_SET.add("/auth/do/member/register");
        PASS_RES_SET.add("/auth/member/send/short/message.json");
    }

    // 放行页面的静态资源
    public static final Set<String> STATIC_RES_SET = new HashSet<>();

    static {
        STATIC_RES_SET.add("bootstrap");
        STATIC_RES_SET.add("css");
        STATIC_RES_SET.add("fonts");
        STATIC_RES_SET.add("img");
        STATIC_RES_SET.add("jquery");
        STATIC_RES_SET.add("layer");
        STATIC_RES_SET.add("script");
        STATIC_RES_SET.add("ztree");
    }

    /**
     * 判断某个ServletPath 的值是否对应一个静态资源
     * @param servletPath
     * @return
     *  true:是静态资源
     *  false：不是静态资源
     */

    public static boolean judgeCurrentServletPathWeatherStaticResource(String servletPath){

        // 排除字符串无效的情况
        if (servletPath == null || servletPath.length() == 0){
            throw  new RuntimeException(CrowdConstant.MESSAGE_STRING_INVALIDATE);
        }

        // 根据“/”拆分ServletPath字符串
        String[] split = servletPath.split("/");

        // 考虑第一个斜杆左边经过拆分后得到一个空字符串是数组第一个元素，所以需要使用下标1取第二个元素
        String firstLevelPath = split[1];

        // 判断是否在集合中
        return STATIC_RES_SET.contains(firstLevelPath);
    }
}
